﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using CMS_GYM;

namespace CMS_GYM.Interface
{
    public partial class frmQuanLyNguoiDung : frmTemplete1
    {
        #region "Declare Variables"
        clsNhanVienDTO NhanVienDTO = new clsNhanVienDTO();
        clsNhanVienBUS NhanVienBUS = new clsNhanVienBUS();
        clsQuyenHanBUS QuyenHanBUS = new clsQuyenHanBUS();
        int IDNhanVien = 0;
        #endregion

        #region "Initials"
        #region frmUsers()
        public frmQuanLyNguoiDung()
        {
            InitializeComponent();
            lblTitle.Text = "QUẢN LÝ NGƯỜI DÙNG";
            uct_Reset.Reset.Click += new EventHandler(btn_Reset_Click);
            uct_Save.Save.Click += new EventHandler(btn_Save_Click);
            uct_Delete.Delete.Click += new EventHandler(btn_Delete_Click);
            uct_Refresh.Refresh.Click += new EventHandler(btn_Refresh_Click);
            LoadData();
        }
        #endregion
        #endregion

        #region "Functions"
        private void SetPermission()
        {
            uct_Reset.Enabled = clsUser.LayThongTinPhanQuyen("QuanLyNguoiDung").ChucNang.Them;
            uct_Save.Enabled = clsUser.LayThongTinPhanQuyen("QuanLyNguoiDung").ChucNang.Sua;
            uct_Delete.Enabled = clsUser.LayThongTinPhanQuyen("QuanLyNguoiDung").ChucNang.Xoa;
        }

        #region LoadData()
        public void LoadData()
        {
            ClearData();
            GetUsers();
            DataTable dt = QuyenHanBUS.LayBang();
            cboQuyenHan.DataSource = dt;
            cboQuyenHan.DisplayMember = "TenQuyenHan";
            cboQuyenHan.ValueMember = "MaQuyenHan";
            dtg_Data_Resize(null, null);
        }
        #endregion

        #region GetUsers()
        private void GetUsers()
        {
            try
            {
                dtg_Data.Rows.Clear();
                DataTable dt = NhanVienBUS.LayBang();
                DataView dv = new DataView(dt);
                dv.Sort = "NhanVienId";
                for (int i = 0; i < dv.Count; i++)
                {
                    dtg_Data.Rows.Add(new object[] { i+1, dv[i]["NhanVienId"], dv[i]["MaNhanVien"], dv[i]["TenNhanVien"]
                    , dv[i]["TenNguoiDung"], dv[i]["MatKhau"], dv[i]["QuyenHan"]});
                }
            }
            catch { }
        }
        #endregion

        #region ClearData()
        private void ClearData()
        {
            //_userInfo = new Users();
            txtTenNhanVien.Text = string.Empty;
            txtTenNguoiDung.Text = string.Empty;
            txtMatKhau.Text = string.Empty;
            txtMaNhanVien.Text = string.Empty;
        }
        #endregion

        #region GetUserByID(string MaNhanVien)
        public void GetUserByID(string NhanVienId)
        {
            NhanVienDTO = NhanVienBUS.LayThongTinMotNhanVien(NhanVienId);
            FillData(NhanVienDTO);
        }
        #endregion

        #region FillData(clsNhanVienDTO _NhanVienInfo)
        private void FillData(clsNhanVienDTO NhanVien)
        {
            this.txtTenNhanVien.Text = NhanVien.TenNhanVien;
            this.txtTenNguoiDung.Text = NhanVien.TenNguoiDung;
            this.txtMatKhau.Text = "1111111111";
            this.txtMaNhanVien.Text = NhanVien.MaNhanVien;
            cboQuyenHan.SelectedValue = NhanVien.QuyenHan.MaQuyenHan;
            this.txtSoDienThoai.Text = "";
        }
        #endregion

        #endregion

        #region "Events"
        #region btn_Lock_Click(object sender, EventArgs e)
        private void btn_Lock_Click(object sender, EventArgs e)
        {
            try
            {
                if (NhanVienDTO.MaNhanVien.ToString() != string.Empty)
                {
                    if (NhanVienDTO.TenNguoiDung.ToUpper() == "ADMIN")
                    {
                        MessageBox.Show("Tài khoản (admin) không được phép Chỉnh sửa", "Thông báo");
                        txtTenNhanVien.Focus();
                        return;
                    }
                    // BLUsers.UpdateLock(_userInfo.UserID);
                    //NhanVienInfo.Locked = !NhanVienInfo.Locked;
                    //if (_userInfo.Locked) btn_Lock.Image = global::UI.Properties.Resources.Locked;
                    //else btn_Lock.Image = global::UI.Properties.Resources.UnLocked;
                    //dtg_Data.SelectedRows[0].Cells["Locked"].Value = NhanVienInfo.Locked;
                }
            }
            catch (Exception ex)
            {
                //PscMessage.Show(ex.Message, "ERROR", ListButton.Close, ICon.Error);
            }
        }
        #endregion

        #region btn_Reset_Click(object sender, EventArgs e)
        private void btn_Reset_Click(object sender, EventArgs e)
        {
            ClearData();
            txtTenNguoiDung.Focus();
            IDNhanVien = 0;
        }
        #endregion

        #region btn_Save_Click(object sender, EventArgs e)
        private void btn_Save_Click(object sender, EventArgs e)
        {
            try
            {
                clsNhanVienDTO userInfo = new clsNhanVienDTO();
                userInfo.TenNhanVien = txtTenNhanVien.Text.Trim();
                userInfo.TenNguoiDung = txtTenNguoiDung.Text.Trim();
                userInfo.MaNhanVien = txtMaNhanVien.Text.Trim();
                userInfo.MatKhau = txtMatKhau.Text.Trim();
                userInfo.QuyenHan.MaQuyenHan = int.Parse(((DataRowView)cboQuyenHan.SelectedItem)["MaQuyenHan"].ToString());
                userInfo.QuyenHan.TenQuyenHan = ((DataRowView)cboQuyenHan.SelectedItem)["TenQuyenHan"].ToString();
                if (userInfo.TenNguoiDung == string.Empty)
                {
                    MessageBox.Show("Tên đăng nhập không được để trống.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Question);
                    txtTenNguoiDung.Focus();
                    return;
                }
                if (userInfo.TenNhanVien == string.Empty)
                {
                    MessageBox.Show("Tên người dùng không được để trống.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Question);
                    txtTenNhanVien.Focus();
                    return;
                }
                if (userInfo.MaNhanVien == string.Empty)
                {
                    MessageBox.Show("Mã nhân viên không được để trống.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Question);
                    txtMaNhanVien.Focus();
                    return;
                }
                
                if (IDNhanVien == 0) // Insert
                {
                    if (MessageBox.Show("Xác nhận thêm mới dữ liệu", "Thông báo", MessageBoxButtons.YesNo
                        , MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.No) 
                        return;
                    
                    int result = NhanVienBUS.Them(userInfo);
                    if (result == -1)
                    {
                        MessageBox.Show("Lỗi thêm mới nhân viên.", "Thông báo");
                    }
                    else
                    {
                        MessageBox.Show("Thêm mới dữ liệu nhân viên thành công", "Thông báo");
                    }

                    GetUsers();
                }
                else // update
                {
                    if (MessageBox.Show("Xác nhận cập nhật dữ liệu", "Thông báo", MessageBoxButtons.YesNo
                          , MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.No)
                        return;
                    userInfo.NhanVienId = NhanVienDTO.NhanVienId;                   
                    int result = NhanVienBUS.Sua(userInfo);
                    if (result == -1)
                    {
                        MessageBox.Show("Lỗi cập nhật thông tin nhân viên.", "Thông báo");
                    }
                    else
                    {
                        MessageBox.Show("Cập nhật dữ liệu nhân viên thành công", "Thông báo");
                    }
                    GetUsers();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Lỗi cập nhật dữ liệu", "Thông báo");
            }
        }
        #endregion

        #region btn_Delete_Click(object sender, EventArgs e)
        private void btn_Delete_Click(object sender, EventArgs e)
        {
            if (NhanVienDTO.NhanVienId > 0)
            {
                if (NhanVienDTO.TenNguoiDung.ToUpper() == "ADMIN")
                {
                    MessageBox.Show("Tài khoản (admin) không được phép Chỉnh sửa", "Thông báo");
                    return;
                }
                if (MessageBox.Show("Xóa tài khoản [" + NhanVienDTO.TenNguoiDung + "] của " + NhanVienDTO.TenNhanVien + " ?", "Thông báo", 
                    MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.No)
                    return;
                int result = NhanVienBUS.Xoa(NhanVienDTO.NhanVienId);
                if (result == 1)
                {
                    MessageBox.Show("Xóa dữ liệu thành công", "Thông báo");
                    GetUsers();
                    return;
                }
                else
                    MessageBox.Show("Lỗi xóa dữ liệu", "Thông báo");
               
                //btn_Reset_Click(null, null);
            }
        }
        #endregion

        #region dtg_Data_RowEnter(object sender, DataGridViewCellEventArgs e)
        private void dtg_Data_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                if (dtg_Data.Rows.Count > 0)
                {
                    IDNhanVien = int.Parse(dtg_Data.SelectedRows[0].Cells["NhanVienId"].Value.ToString());
                    GetUserByID(dtg_Data.SelectedRows[0].Cells["NhanVienId"].Value.ToString());
                }
            }
            catch { }
        }
        #endregion

        #region dtg_Data_Resize(object sender, EventArgs e)
        private void dtg_Data_Resize(object sender, EventArgs e)
        {
            //dtg_Data.Columns["RecordNumber"].Width = 50;
            //dtg_Data.Columns["Login"].Width = (dtg_Data.Width - 120) / 3;
            //dtg_Data.Columns["UserName"].Width = dtg_Data.Width - ((dtg_Data.Width - 120) / 3) - 120;
            //dtg_Data.Columns["Locked"].Width = 50;
        }
        #endregion

        #region btn_Refresh_Click(object sender, EventArgs e)
        private void btn_Refresh_Click(object sender, EventArgs e)
        {
            LoadData();
        }
        #endregion

        private void frmQuanLyNguoiDung_Load(object sender, EventArgs e)
        {
            try
            {
                SetPermission();
            }
            catch { }
        }

        #endregion
    }
}